package com.itheima.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/*
  1：定义Filter  主要实现 拦截功能 doFilter
  2: 配置Filter 加入注解
      当前的 Filter类上加   告诉别人哥们出现了。。@WebFilter 拦截资源
      还好要启动(引导)类上 加一个 @ServletComponetScan  扫描 包下属于servlet的资源
                                servlet资源对象 也交给spring管理
 */
//@WebFilter("/*")//  /*拦截所有  在spring框架上 过滤器不写也是拦截所有
        //  urlPatterns  你拦截哪些路径
//@WebFilter("/login")//只拦截/login的请求
//@WebFilter("/emps/*")//  目录匹配拦截
//@WebFilter("/emps/*")
public class DemoFilter implements Filter {

    /**
     *
     * @param servletRequest   拦截请求信息
     * @param servletResponse  拦截响应信息
     * @param filterChain      过滤器链儿--由它来决定是否放行到 请求资源上
     * @throws IOException
     * @throws ServletException
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("Demo过滤器 拦截住请求.... ");
        System.out.println("放行前的逻辑....");
        //怎么放行呢？ 放行指的是 对应请求对象和响应对象的放行
        filterChain.doFilter(servletRequest,servletResponse);// 放行  可以访问到 资源信息

        // 执行了 资源之后  放行之后逻辑
        System.out.println("资源执行完毕之后，才会执行的逻辑....");
    }

    // 下面两个方法和 拦截没有关系
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("init Filter初始化方法 代表Filter对象 呱呱坠地！！");
    }

    @Override
    public void destroy() {
        System.out.println("destroy销毁方法，垂死病中惊坐起！！");
    }
}
